package game;

import java.util.ArrayList;

/**
 * Valide les frontiere d'un univers fini
 */
public class Carre {

	public int frontiere[] = new int[4];

	/**
	 * Delimite les frontieres du plateau de jeu.
	 */
	public Carre() {
		frontiere[0] = 0; // xmin
		frontiere[1] = 10; // xmax
		frontiere[2] = 0; // ymin
		frontiere[3] = 10; // ymax
	}

	/**
	 * Constructeur d'un univers fini
	 */
	public Carre(int xmin, int xmax, int ymin, int ymax) {
		if ((xmin < xmax) && (ymin < ymax)) {
			frontiere[0] = xmin;
			frontiere[1] = xmax;
			frontiere[2] = ymin;
			frontiere[3] = ymax;
		}
	}

	/**
	 * Verifie que la cellule donnee ne se trouve pas en dehors des frontieres
	 * du plateau.
	 * 
	 * @param c
	 *            : cellule e verifier
	 * @return false si la cellule est en dehors des frontieres, true sinon
	 */
	public boolean testfrontiere(Cellule c) {
		if ((c.posX < frontiere[0]) || (c.posX > frontiere[1])
				|| (c.posY < frontiere[2]) || (c.posY > frontiere[3])) {
			return false;
		}
		return true;
	}

	/**
	 * Trouve si une cellule est hors limite et la supprime.
	 * @param liste
	 * @return une ArrayList<Cellule>
	 */
	public ArrayList<Cellule> horsLimite(ArrayList<Cellule> liste) {
		int cpt;
		do {
			cpt = 0;
			for (int i = 0; i < liste.size(); i++) {
				if (!testfrontiere(liste.get(i))) {
					liste.remove(i);
					cpt++;
				}
			}
		} while (cpt != 0);
		return liste;
	}
}
